package student.aistar.day13;

import java.io.*;

/**
 * IO - 读取文件中的内容 - 写出去
 *      文件的拷贝操作.
 *      弊端 - 效率地下
 */
public class HelloIO {
    public static void main(String[] args) throws Exception {
        //1. 选择FileInputStream/FileOutputStream - 节点流 - 具备文件的真正的读写能力
        //面向父类编程 - 字节输入流/字节输出流

        //可以处理文本
        //支持二进制文件 - 图片, 视频
        InputStream in = null;
        OutputStream out = null;

        //2. 初始化输入流 - 确定源头和目标
        //构造方法依然是可以传入绝对路径和相对路径
        in = new FileInputStream("C:\\Users\\qinfeng\\Pictures\\广西美食\\images.jpg");
        out = new FileOutputStream("C:\\Users\\qinfeng\\Pictures\\广西美食\\images2.jpg");

        int len = -1;
        while (true){
            //定义一个变量len, 保存每次读取到的字节
            len = in.read();//单个字节单个字节的进行读取
            System.out.println(len); //读到的内容

            //一个汉字在UTF-8编码下占3个字节的, 字母数字, 符号, 占一个字节
            //一个汉字在GBK编码下占2哥字节的, 字母, 数字, 符号 - 占1个字节
            //如果输入流中没有下一个字节 - 文件已经读取到末尾了, 返回-1

            if(len == -1)
                break;
            //写出去的时候, 会自动处理中文
            out.write(len);
            System.out.println("文件拷贝成功");
        }
        in.close();
        out.close();
    }
}
